package com.vf.cloud.paas.app.agent.common.util;

import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;

import com.jfinal.kit.StrKit;
import com.vf.cloud.paas.app.agent.common.vo.KeyVo;
import com.vf.cloud.paas.common.service.impl.RedisImpl;
import com.vf.cloud.paas.common.util.SpringContextHolder;

public class KeyUtil {
	
	public static KeyVo get(String key) {
		if(StrKit.isBlank(key)) {
			return null;
		}
		String[] arr=key.split("_");
		if(arr!=null && arr.length>=6) {
			return new KeyVo(arr[1],arr[2],arr[3],arr[4],arr[5]);
		}
		return null;
	}
	
	
	

//	
//	public static String getMasterKeyGPUIndexToToken(String GPU_Index,String agentToken) {
//		return String.format("%s%s|%s",PrefixUtil.GPU_Master,GPU_Index,agentToken);
//	}
//	
//	
//	public static String getMasterKeyTokenToGPUIndex(String agentToken,String GPU_Index) {
//		return String.format("%s%s|%s",PrefixUtil.GPU_Master,agentToken,GPU_Index);
//	}
	
	//GPU_state_index_uuid_sn
	public static String  getFreeKey(String index,String uuid,int sn) {
		return String.format("GPU_0_%s_%s_%s",Integer.parseInt(index),uuid,sn);
	}
	
	public static int  getGPUIndex(String rkey) {
		if(StrKit.isBlank(rkey)) {
			return -1;
		}
		String[] arr=rkey.split("_");
		
		try {
			return Integer.parseInt(arr[2]);
		}catch (Exception e) {
			return -1;
		}
	}
	
	public static String  getGPUId(String rkey) {
		if(StrKit.isBlank(rkey)) {
			return "";
		}
		String[] arr=rkey.split("_");
		try {
			return arr[3];
		}catch (Exception e) {
			return "";
		}
	}
	
	
	
//	public static String  getUsedKey(String index,String uuid) {
//		return String.format("GPU_1_%s_%s",Integer.parseInt(index),uuid);
//	}
	
	
	private static AtomicInteger at = new AtomicInteger(0);
	public static Integer gen() {
		return 4000+at.incrementAndGet();
	}
	
	
	public static Integer genKey() {
		Random random = new Random();
		String result = "";
		while(true) {
			for (int i = 0; i < 8; i++) {
				result += (random.nextInt(9) + 1);
			}
			if(!SpringContextHolder.getBean(RedisImpl.class).hasKey(result)) {
				break;
			}
		}
		return Integer.parseInt(result);
	}
	
	
	public static void main(String[] args) {
		for(int i=0;i<10000;i++) {
			new Thread(()->{
				System.out.println("i="+gen());
			}).start();
		}
	}
	
}
